主题
图片比较-直方图比较 - CalculateHistograms
函数简介
计算两张图片的直方图相似度,通过比较颜色分布直方图判断相似程度,识别的两个图像大小必须一致。
接口名称
CalculateHistogramsDLL调用
double CalculateHistograms(long ola, long imgPtr1, long imgPtr2);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| ola | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| imgPtr1 | 长整数型 | 第一张图片的OLAImage对象地址 |
| imgPtr2 | 长整数型 | 第二张图片的OLAImage对象地址 |
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
double val = ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}csharp
using OLAPlug;
var ola = new OLAPlugServer();
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0)
{
double val = ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
img1 = ola.LoadImage("images/scene.png")
img2 = ola.LoadImage("img/template.bmp")
if img1 and img2:
val = ola.CalculateHistograms(img1, img2)
# 后续不再使用该图时释放
ola.FreeImage(img1)
# 后续不再使用该对比图时释放
ola.FreeImage(img2)java
import com.olaplug.OLAPlugServer;
import com.olaplug.model.MatchResult;
import java.util.List;
OLAPlugServer ola = new OLAPlugServer();
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}cpp
var ola = com("OlaPlug.OlaSoft")
var img1 = ola.LoadImage("images/scene.png")
var img2 = ola.LoadImage("img/template.bmp")
if(img1 && img2) {
ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
img1 = ola.LoadImage("images/scene.png")
img2 = ola.LoadImage("img/template.bmp")
If img1 <> 0 And img2 <> 0 Then
ola.CalculateHistograms(img1, img2);
' 后续不再使用该图时释放
' 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)
End Iftext
.局部变量 ola, OLAPlug
ola.创建 ()
img1 = ola.LoadImage ("images/scene.png")
img2 = ola.LoadImage ("img/template.bmp")
ola.CalculateHistograms(img1, img2);
' 后续不再使用该图时释放
ola.FreeImage (img1)
' 后续不再使用该对比图时释放
ola.FreeImage (img2)aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var img1 = ola.LoadImage("images/scene.png");
var img2 = ola.LoadImage("img/template.bmp");
if(img1 && img2){
ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 img1 = ola.LoadImage("images/scene.png")
长整数 img2 = ola.LoadImage("img/template.bmp")
ola.CalculateHistograms(img1, img2);
' 后续不再使用该图时释放
' 后续不再使用该对比图时释放
ola.FreeImage(img1)
ola.FreeImage(img2)cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long img1 = ola.LoadImage("images/scene.png");
long img2 = ola.LoadImage("img/template.bmp");
if (img1 != 0 && img2 != 0) {
ola.CalculateHistograms(img1, img2);
// 后续不再使用该图时释放
// 后续不再使用该对比图时释放
ola.FreeImage(img1);
ola.FreeImage(img2);
}原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
CalculateHistograms(instance, img1, img2);csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern double CalculateHistograms(long ola, long image1, long image2);
long instance = CreateCOLAPlugInterFace();
double val = CalculateHistograms(instance, img1, img2);python
from ctypes import CDLL, c_int64
ola = CDLL("OLAPlug_x64.dll")
instance = ola.CreateCOLAPlugInterFace()返回值
双精度浮点数,范围0.0到1.0。1.0表示完全相同,0.0表示完全不同,值越接近1表示图片越相似。
注意事项
- 两个图像大小必须一致
- 此函数比较的是图片的整体颜色分布,而不是像素级别的比较
